package com.uatair.system.service.impl;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.uatair.common.utils.DateUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.uatair.system.mapper.TpPlatformMapper;
import com.uatair.system.domain.TpPlatform;
import com.uatair.system.service.ITpPlatformService;

/**
 * 第三方平台信息Service业务层处理
 * 
 * @author uatair
 * @date 2025-06-20
 */
@Service
public class TpPlatformServiceImpl extends ServiceImpl<TpPlatformMapper, TpPlatform> implements ITpPlatformService {
    @Autowired
    private TpPlatformMapper tpPlatformMapper;

    /**
     * 查询第三方平台信息
     *
     * @param id 第三方平台信息主键
     * @return 第三方平台信息
     */
    @Override
    public TpPlatform selectTpPlatformById(Long id) {
        return tpPlatformMapper.selectTpPlatformById(id);
    }

    /**
     * 查询第三方平台信息列表
     *
     * @param tpPlatform 第三方平台信息
     * @return 第三方平台信息
     */
    @Override
    public List<TpPlatform> selectTpPlatformList(TpPlatform tpPlatform) {
        return tpPlatformMapper.selectTpPlatformList(tpPlatform);
    }

    /**
     * 新增第三方平台信息
     *
     * @param tpPlatform 第三方平台信息
     * @return 结果
     */
    @Override
    public int insertTpPlatform(TpPlatform tpPlatform) {
        tpPlatform.setCreateTime(DateUtils.getNowDate());
        return tpPlatformMapper.insertTpPlatform(tpPlatform);
    }

    /**
     * 修改第三方平台信息
     *
     * @param tpPlatform 第三方平台信息
     * @return 结果
     */
    @Override
    public int updateTpPlatform(TpPlatform tpPlatform) {
        tpPlatform.setUpdateTime(DateUtils.getNowDate());
        return tpPlatformMapper.updateTpPlatform(tpPlatform);
    }

    /**
     * 批量删除第三方平台信息
     *
     * @param ids 需要删除的第三方平台信息主键
     * @return 结果
     */
    @Override
    public int deleteTpPlatformByIds(Long[] ids) {
        return tpPlatformMapper.deleteTpPlatformByIds(ids);
    }

    /**
     * 删除第三方平台信息信息
     *
     * @param id 第三方平台信息主键
     * @return 结果
     */
    @Override
    public int deleteTpPlatformById(Long id) {
        return tpPlatformMapper.deleteTpPlatformById(id);
    }

    @Override
    public int updateStatus(Long id, String status) {
        return tpPlatformMapper.updateStatus(id, status);
    }

    @Override
    public List<TpPlatform> selectTpPlatformTree() {
        // 使用正确的方法名
        List<TpPlatform> allPlatforms = tpPlatformMapper.selectAllPlatformsForTree();
        return buildTree(allPlatforms);
    }

    private List<TpPlatform> buildTree(List<TpPlatform> list) {
        Map<Long, TpPlatform> map = new HashMap<>();
        List<TpPlatform> result = new ArrayList<>();

        // 第一遍：建立ID映射
        list.forEach(item -> {
            item.setChildren(new ArrayList<>()); // 初始化children
            map.put(item.getId(), item);
        });

        // 第二遍：构建树形
        list.forEach(item -> {
            if (item.getParentId() == null || item.getParentId() == 0L) {
                result.add(item);
            } else {
                TpPlatform parent = map.get(item.getParentId());
                if (parent != null) {
                    parent.getChildren().add(item);
                }
            }
        });

        return result;
    }
}